# 集合是无序的，元素不能重复，可以使用{}或者是set来表示

# 创建集合对象
x = {"hello",1,"good"}
# print(x) # 打印出来的时候，顺序会乱
# 因为集合无序

# 集合不允许重复，即使有重复的对象，返回也只有一次
# a = {10,20,30,40,50,50,30,20,10}
# print(a) # {50, 20, 40, 10, 30}

# 使用set来去创建集合对象
x1 = set()
# print(x1) # set()，空集合就是张这个样子的

# 集合的增删改查

# 集合新增的方法
a = {10,20,30,40,50,50,30,20,10}
"""a.add("好健康") # 使用add方法进行新增
print(a)"""

# 集合删除的方法：remove,删除具体的值
a.remove(50) # 把集合中的50删除掉
# print(a) # 打印
# a.remove("好健康") # KeyError: '好健康' 删除不存在的会报错

# 集合删除方法：pop ，随机删除一个值
a.pop()
# print(a)

# 清空集合的方法：clear
a.clear()
# print(a) # set()

# 修改集合的方法：union，合并集合的方法
"""b = {10,20,30,40,10,10,20,30,40}
# print(b) # {10,20,30,40}
c = b.union({10,20,30,"好将抗","好能抗","好健康","好简称"})
print(c)"""

# 新集合和旧集合合到一起：update
a = {10,20,30,40,50}
a.update([23,44,55]) # 可以和非集合对象合并，但必须是可迭代的
a.update("123123") # 可以和非集合对象合并，但必须是可迭代的
a.update((11,22,"asd","asdq")) # 可以和非集合对象合并，但必须是可迭代的
a.update({11,"qwe1","qwe2"}) # 可以和非集合对象合并，但必须是可迭代的
"""
可迭代的：
字符串
列表
元组
集合
"""
# print(a)

# 集合里运算符的使用
aa1 = {'安其拉','李白','澜','镜','露娜','孙少香','鲁班大师','廉颇'}
bb1 = {'夏洛特','镜','安其拉','李白','关羽','孙少香'}
"""
差集：
两个集合中不一样的内容就是差集
"""
# 集合支持 很多算数运算符
# todo：差集
# print(aa1 - bb1) # 求A和B的差集   返回A {'澜','露娜','廉颇','鲁班大师'}
# print(bb1 - aa1) # 求A和B的差集   返回B {'夏洛特','关羽'}

# 交集
# print(aa1 & bb1) # 求a和b的交集  返回 ：{"安其拉","李白","镜","孙少香"}

# 并集
# print(aa1 | bb1) # 求a和b的并集 ，两个集合合入到一起，去掉重复返回

#差集的并集
print(aa1 ^ bb1) #a ^ b   求a和b的差集的并集 {'澜','露娜','廉颇','鲁班大师','夏洛特','关羽'}


"""
集合的总结：
1、集合是无序的，没有序列
2、集合里面的内容不允许重复
3、集合不支持索引：切片访问、索引访问都是不ok的
"""







